package com.xm.repository;

import com.xm.entity.User;
import jakarta.transaction.Transactional;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

/**
 * JpaRepository 是Spring Data JPA提供的一个核心接口，
 * 提供了丰富的CURD操作和分页、排序功能
 */
@Repository
public interface UserRepository extends JpaRepository<User, Long>, JpaSpecificationExecutor<User> {
    /**
     * 计数未删除数据
     * @param delMark 删除标识 0-未删除；1-已删除
     * @return 个数
     */
    long countByDelMark(int delMark);

    /**
     * 根据id更新姓名
     * @param id 用户ID
     * @param name 姓名
     * @return 1-成功；0-失败
     */
    @Modifying
    @Transactional
    @Query("update User u set u.name = :name where u.id = :id")
    int updateNameById(@Param("id") Long id, @Param("name") String name);
}
